/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package chasqui.servlets;

import conn.bean.BAbonado;
import conn.bean.BAbonadoXLinea;
import conn.bean.BDepartamento;
import conn.bean.BDireccion;
import conn.bean.BDistrito;
import conn.bean.BProvincia;
import conn.bean.BUpdateAbonado;
import conn.dao.DAbonado;
import conn.dao.DCampana;
import conn.dao.DDepartamento;
import conn.dao.DDireccion;
import conn.dao.DDistrito;
import conn.dao.DLinea;
import conn.dao.DProvincia;
import conn.dao.DTipoLinea;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import net.sf.sojo.interchange.json.JsonSerializer;

/**
 *
 * @author kuma-chin
 */
public class AbonadoServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        String action = request.getParameter("action");
        String jspPage = "/index.jsp";

        if ((action == null) || (action.length() < 1)) {

            action = "default";
        }if ("default".equals(action)) {/*LO UTILIZO*/
            String usuario = "";
            HttpSession sesionOk = request.getSession();
            if (sesionOk.getAttribute("usuario") == null) {
                String mensaje="Debe iniciar sesion!!!.";
                request.setAttribute("mensajeError", mensaje);
                jspPage="/usuario.jsp";}
                else {
                usuario = (String)sesionOk.getAttribute("usuario");
                request.setAttribute("usuario", usuario);
                jspPage = "/menu_abonados.jsp";
                 }
        }else if ("crear_abonado".equals(action)) {/*LO UTILIZO - SE CARGAN LOS DATOS DE CREAR ABONADO*/

            String jsc_usuario = request.getParameter("jsc_nombre");
            String jsc_apellidop = request.getParameter("jsc_apellidop");
            String jsc_apellidom = request.getParameter("jsc_apellidom");
            String jsc_sexo  = request.getParameter("jsc_sexo");
            String jsc_ecivil  = request.getParameter("jsc_ecivil");
            String jsc_dateArrival1  = request.getParameter("jsc_dateArrival1");
            String jsc_dir  = request.getParameter("jsc_dir");
            String jsc_tipolinea  = request.getParameter("jsc_tipolinea");
            if ("1".equals(jsc_tipolinea)){jsc_tipolinea="fija";}
            if ("2".equals(jsc_tipolinea)){jsc_tipolinea="movil";}

            /*RELLENA DEPARTAMENTO*/
            DDepartamento ddepartamento = new DDepartamento();
            List departamentos = new ArrayList();
            departamentos = ddepartamento.getmoddepartamento();
            request.setAttribute("departamentos", departamentos);

            /*RELLENA PROVINCIAS CON DEPENDENCIA DE DEPARTAMENTO*/
            String departamento = null;
            departamento = request.getParameter("departamento");
            if(departamento != null){
            DProvincia dprovincia = new DProvincia();
            List provincias = new ArrayList();
            provincias = dprovincia.refreshmodprovincia(departamento);
            request.setAttribute("provincias", provincias);
            String depstr = departamento;
            depstr = ddepartamento.getStrDep(Integer.valueOf(departamento).intValue());
            request.setAttribute("depstr", depstr);}

            String provincia = request.getParameter("provincia");
            if (provincia != null){
            DDistrito ddistrito = new DDistrito();
            List distritos = new ArrayList();
            distritos = ddistrito.refreshmoddistrito(provincia);
            DProvincia dprovincia = new DProvincia();
            String strprovincia = null;
            strprovincia = dprovincia.getStrProv(Integer.valueOf(provincia).intValue());
            request.setAttribute("strprovincia", strprovincia);
            request.setAttribute("distritos", distritos);}

            DLinea dlinea = new DLinea();
            int nextline = dlinea.getnextlinea();
            request.setAttribute("linea", nextline);

            DTipoLinea dtipolinea = new DTipoLinea();
            List tipolineas = new ArrayList();
            tipolineas = dtipolinea.getmodtipolinea();
            request.setAttribute("tipolineas", tipolineas);

            request.setAttribute("nombre", jsc_usuario);
            request.setAttribute("apellidop",jsc_apellidop);
            request.setAttribute("apellidom",jsc_apellidom);
            request.setAttribute("sexo",jsc_sexo);
            request.setAttribute("ecivil",jsc_ecivil);
            request.setAttribute("dateArrival1",jsc_dateArrival1);
            request.setAttribute("dir",jsc_dir);
            request.setAttribute("tipolinea",jsc_tipolinea);

            jspPage = "/registro_abonado.jsp";

      }else if ("crear_abonado2".equals(action)) {/*LO UTILIZO-SE CREA ABONADO*/
            String nombre = null;
            String apellidop = null;
            String apellidom = null;
            String sexo = null;
            String ecivil = null;
            String fechanac = null;
            int dep = 0;
            int prov = 0;
            int dist = 0;
            String dir = null;
            String linea = null;
            String tipolinea = null;

                nombre = request.getParameter("nombre");
                apellidop = request.getParameter("apellidop");
                apellidom = request.getParameter("apellidom");
                sexo = request.getParameter("sexo");
                ecivil = request.getParameter("ecivil");
                fechanac = request.getParameter("fechanac");
                dep = Integer.valueOf(request.getParameter("departamento")).intValue();
                prov = Integer.valueOf(request.getParameter("provincia")).intValue();
                dist = Integer.valueOf(request.getParameter("distrito")).intValue();
                dir = request.getParameter("dir");
                linea = request.getParameter("linea");
                tipolinea = request.getParameter("tipolinea");
                int inttipolinea = 0;
                if("1".equals(tipolinea)){inttipolinea=1;}
                if("2".equals(tipolinea)){inttipolinea=2;}

                DDireccion ddireccion = new DDireccion();
                ddireccion.crearDireccion(dir, dist);

                int ultimoiddireccion = 0;
                ultimoiddireccion = ddireccion.getUltimoId();
                String livecondition = "activo";

                BDepartamento bdepartamento= new BDepartamento(dep,null);
                // public BDepartamento(int id, String desc)
                BProvincia bprovincia = new BProvincia(prov,null,bdepartamento);
                // public BProvincia(int id, String desc, BDepartamento depa) {
                BDistrito bdistrito = new BDistrito(dist,null,bprovincia);
                //    public BDistrito(int id, String desc, BProvincia prov) {
                BDireccion bdireccion = new BDireccion(ultimoiddireccion,dir,bdistrito);
                //    public BDireccion(int variddireccion, String vardescripcion, BDistrito vardistrito){
                BAbonado babonado = new BAbonado(0,nombre,apellidop,apellidom,sexo,ecivil,fechanac,bdireccion,livecondition);
               // (int varidabonado, String varnombre, String varapellidop, String varapellidom, String varsexo, String varestcivil,String varfechnac, BDireccion vardireccion)

                DAbonado dabonado = new DAbonado();
                dabonado.crearAbonado(babonado);
                int idabonado = dabonado.getUltimoId();

                DLinea dlinea = new DLinea();
                dlinea.crearLinea(linea, inttipolinea, idabonado);

                // Aca se envian nuevamente los valors
                 /*RELLENA DEPARTAMENTO*/
            DDepartamento ddepartamento = new DDepartamento();
            List departamentos = new ArrayList();
            departamentos = ddepartamento.getmoddepartamento();
            request.setAttribute("departamentos", departamentos);

            /*RELLENA PROVINCIAS CON DEPENDENCIA DE DEPARTAMENTO*/
            String departamento = null;
            departamento = request.getParameter("departamento");
            if(departamento != null){
            DProvincia dprovincia = new DProvincia();
            List provincias = new ArrayList();
            provincias = dprovincia.refreshmodprovincia(departamento);
            request.setAttribute("provincias", provincias);
            String depstr = departamento;
            depstr = ddepartamento.getStrDep(Integer.valueOf(departamento).intValue());
            request.setAttribute("depstr", depstr);}

            String provincia = request.getParameter("provincia");
            if (provincia != null){
            DDistrito ddistrito = new DDistrito();
            List distritos = new ArrayList();
            distritos = ddistrito.refreshmoddistrito(provincia);
            DProvincia dprovincia = new DProvincia();
            String strprovincia = null;
            strprovincia = dprovincia.getStrProv(Integer.valueOf(provincia).intValue());
            request.setAttribute("strprovincia", strprovincia);
            request.setAttribute("distritos", distritos);}

            DTipoLinea dtipolinea = new DTipoLinea();
            List tipolineas = new ArrayList();
            tipolineas = dtipolinea.getmodtipolinea();
            request.setAttribute("tipolineas", tipolineas);

            /*VUELVE A MOSTRAR EL VALOR DE LA SIGUIENTE LINEA QUE SE LE ASIGNARA AL FUTURO EMPLEADO*/
            int nextline = dlinea.getnextlinea();
            request.setAttribute("linea", nextline);

                jspPage = "/registro_abonado.jsp";

     }else if ("reporte_abonado".equals(action)) {/*LO UTILIZO - SE REPORTA ABONADO*/
            /*capturo los parametros para que los que fueron llenados se vuelvan a mostrar al refrescar la pagina*/
            String fltrlinea = request.getParameter("fltrlinea");
            String fltrtipolinea = request.getParameter("fltrtipolinea");
            if("1".equals(fltrtipolinea)){fltrtipolinea="fija";}
            if("2".equals(fltrtipolinea)){fltrtipolinea="movil";}
            String fltrnombre = request.getParameter("fltrnombre");
            String fltrapelpat = request.getParameter("fltrapelpat");
            String fltrapelmat = request.getParameter("fltrapelmat");
            String fltrdireccion = request.getParameter("fltrdireccion");
            String fltrcampana = request.getParameter("fltrcampana");

            /*RELLENA DEPARTAMENTO*/
            DDepartamento ddepartamento = new DDepartamento();
            List departamentos = new ArrayList();
            departamentos = ddepartamento.getmoddepartamento();
            request.setAttribute("departamentos", departamentos);

            /*RELLENA PROVINCIAS CON DEPENDENCIA DE DEPARTAMENTO*/
            String departamento = null;
            departamento = request.getParameter("departamento");
            if("Seleccionar".equals(departamento))
            {departamento = null;}
            if(departamento != null && !"Seleccionar".equals(departamento)){
            DProvincia dprovincia = new DProvincia();
            List provincias = new ArrayList();
            provincias = dprovincia.refreshmodprovincia(departamento);
            request.setAttribute("provincias", provincias);
            String depstr = departamento;
            depstr = ddepartamento.getStrDep(Integer.valueOf(departamento).intValue());
            request.setAttribute("depstr", depstr);}

            String provincia = request.getParameter("provincia");
            if("Seleccionar".equals(provincia))
            {provincia = null;}
            if (provincia != null ){
            DDistrito ddistrito = new DDistrito();
            List distritos = new ArrayList();
            distritos = ddistrito.refreshmoddistrito(provincia);
            DProvincia dprovincia = new DProvincia();

            /*ANTE EL EVENTO DE SELECCIONAR UN CAMPO DEL COMBO YA CARGADO, ME ENCARGO DE MOSTRAR ESE VALOR POR DEFECTO*/
            String strprovincia = null;
            strprovincia = dprovincia.getStrProv(Integer.valueOf(provincia).intValue());
            request.setAttribute("strprovincia", strprovincia);
            request.setAttribute("distritos", distritos);} //lleno el combo distritos

            /*Lleno combo tipo linea*/
            DTipoLinea dtipolinea = new DTipoLinea();
            List tipolineas = new ArrayList();
            tipolineas = dtipolinea.getmodtipolinea();
            request.setAttribute("fltrtipolineas", tipolineas);
            /*---*/
            /*utilizare estas variables para los filtros: prefijo arg y fltr*/
            String argdepa = request.getParameter("departamento");
            String argprovi = request.getParameter("provincia");
            String argdistrito = request.getParameter("distrito");

            if("Seleccionar".equals(argdepa)){argdepa = null;}
            if("Seleccionar".equals(argprovi)){argprovi = null;}
            if("Seleccionar".equals(argdistrito)){argdistrito = null;}

            request.setAttribute("fltrlinea", fltrlinea);
            request.setAttribute("fltrtipolinea", fltrtipolinea);
            request.setAttribute("fltrnombre", fltrnombre);
            request.setAttribute("fltrapelpat", fltrapelpat);
            request.setAttribute("fltrapelmat", fltrapelmat);
            request.setAttribute("fltrdireccion", fltrdireccion);
            request.setAttribute("fltrcampana", fltrcampana);
           // int valor = fltrcampana.length();
            /*a veces pueden tener valor null y el query botara error*/
            /*si son nulos, no se puso nada, entonces ese campo no limita, ergo puede tener valor % */
            
            if(fltrlinea == null || fltrlinea.contentEquals("")){fltrlinea="%";}
            if(fltrtipolinea == null || fltrtipolinea.contentEquals("")){fltrtipolinea="%";}
            if(fltrnombre == null || fltrnombre.contentEquals("")){fltrnombre="%";}
            if(fltrapelpat == null || fltrapelpat.contentEquals("")){fltrapelpat="%";}
            if(fltrapelmat == null || fltrapelmat.contentEquals("")){fltrapelmat="%";}
            if(argdepa == null || argdepa.contentEquals("")){argdepa="%";}
            if(argprovi == null || argprovi.contentEquals("")){argprovi="%";}
            if(argdistrito == null || argdistrito.contentEquals("")){argdistrito="%";}
            if(fltrdireccion == null || fltrdireccion.contentEquals("")){fltrdireccion="%";}
            if(fltrcampana == null || fltrcampana.contentEquals("")){fltrcampana="%";}

            /*aplico el filtro o en su defecto incialmente, con todos los valores en null, mostrara todo la tabla*/
            DAbonado dabonado = new DAbonado();
            DProvincia dprovincia = new DProvincia();
            DDistrito ddistrito =  new DDistrito();
            List listabonados = new ArrayList();

            /*argdepa, argprovi, argdistrito, si se dejan vacios, vendran con un id y no el nombre, hay que capturar el nombre*/
            if(!("%".equals(argdepa))){argdepa=ddepartamento.getStrDep(Integer.valueOf(argdepa).intValue());}
            if(!("%".equals(argprovi))){argprovi=dprovincia.getStrProv(Integer.valueOf(argprovi).intValue());}
            if(!("%".equals(argdistrito))){argdistrito=ddistrito.getStrDist(Integer.valueOf(argdistrito).intValue());}
            listabonados = dabonado.filtrarabonado(fltrlinea,fltrtipolinea,fltrnombre,fltrapelpat,fltrapelmat,argdepa,argprovi,argdistrito,fltrdireccion,fltrcampana);
            request.setAttribute("listabonados", listabonados);
            
            jspPage = "/reporte_abonado.jsp";

      }else if ("modificar_abonado".equals(action)) {
          /*Cargo managers y listas que utilizare*/
          DDepartamento ddepartamento = new DDepartamento();
          DProvincia dprovincia = new DProvincia();
          DDistrito ddistrito = new DDistrito();
          DAbonado dabonado = new DAbonado();
          DTipoLinea dtipolinea = new DTipoLinea();
          List departamentos = new ArrayList();
          List provincias = new ArrayList();
          List distritos = new ArrayList();
          List tipolineas = new ArrayList();
          BAbonado babonado = new BAbonado();

          /*Datos de abonado que recojo de la tabla*/
          String idabonado    = request.getParameter("idabonado");
          String direccion    = request.getParameter("dir");
          String distrito     = request.getParameter("distrito");
          String provincia    = request.getParameter("provincia");
          String departamento = request.getParameter("departamento");
          String linea        = request.getParameter("linea");
          String tipolinea    = request.getParameter("tipolinea");
          /*Esos datos recogidos son volcados ahora al jsp modificar_abonado.jsp*/

          babonado = dabonado.getAbonado(Integer.valueOf(idabonado).intValue());/*con el id recogido capturo otros datos n objeto abonado*/

          departamentos = ddepartamento.getmoddepartamento();
          request.setAttribute("departamentos", departamentos);
          provincias = dprovincia.refreshmodprovincia(Integer.toString(ddepartamento.getIdDep(departamento)));
          request.setAttribute("provincias", provincias);
          distritos = ddistrito.refreshmoddistrito(Integer.toString(dprovincia.getIdProv(provincia, Integer.toString(ddepartamento.getIdDep(departamento)))));
          request.setAttribute("distritos", distritos);
          tipolineas = dtipolinea.getmodtipolinea();
          request.setAttribute("tipolineas", tipolineas);

          request.setAttribute("idabonado", idabonado);
          request.setAttribute("linea",linea);
          request.setAttribute("tipolinea",tipolinea);
          request.setAttribute("nombre", babonado.getNombre());
          request.setAttribute("apellidop", babonado.getApellidop());
          request.setAttribute("apellidom", babonado.getApellidom());
          request.setAttribute("sexo", babonado.getSexo());
          request.setAttribute("ecivil", babonado.getEstcivil());
          request.setAttribute("fechanac", babonado.getFechanacimiento());
          request.setAttribute("dir", direccion);
          request.setAttribute("distrito", distrito);
          request.setAttribute("provincia", provincia);
          request.setAttribute("departamento", departamento);

            jspPage = "/modificar_abonado.jsp";

      }else if ("modificar_abonado2".equals(action)) {

          /*Cargo managers y listas que utilizare*/
          DDepartamento ddepartamento = new DDepartamento();
          List departamentos = new ArrayList();
          DProvincia dprovincia = new DProvincia();
          List provincias = new ArrayList();
          DDistrito ddistrito = new DDistrito();
          List distritos = new ArrayList();
          DTipoLinea dtipolinea = new DTipoLinea();
          List tipolineas = new ArrayList();

          /*obtengo los parametros modificado y antiguos*/
          String idabonado    = request.getParameter("idabonado");
          String nombre       = request.getParameter("nombre");
          String apellidop    = request.getParameter("apellidop");
          String apellidom    = request.getParameter("apellidom");
          String sexo         = request.getParameter("sexo");
          String ecivil       = request.getParameter("ecivil");
          String fechanac     = request.getParameter("fechanac");
          String dir          = request.getParameter("dir");
          String linea        = request.getParameter("linea");
          String tipolinea    = request.getParameter("tipolinea");
          String departamento = request.getParameter("departamento");
          String provincia    = request.getParameter("provincia");
          String distrito     = request.getParameter("distrito");
          /*CARGA DEPARTAMENTO*/
          departamentos = ddepartamento.getmoddepartamento();
          request.setAttribute("departamentos", departamentos);
          int numdep = Integer.valueOf(departamento).intValue();
          departamento = ddepartamento.getStrDep(numdep);
          request.setAttribute("departamento", departamento);
          tipolineas = dtipolinea.getmodtipolinea();
          request.setAttribute("tipolineas", tipolineas);

          /*CARGRA PROVINCIA*/
          provincias = dprovincia.refreshmodprovincia(Integer.toString(numdep));
          request.setAttribute("provincias", provincias);
          if(!("Seleccionar".equals(provincia))){
          int numprov = Integer.valueOf(provincia).intValue();
          provincia = dprovincia.getStrProv(numprov);
          request.setAttribute("provincia", provincia);}

          /*CARGA DISTRITO*/
          String strdep = Integer.toString(numdep);
          int integerprovincia = dprovincia.getIdProv(provincia,strdep );
          distritos = ddistrito.refreshmoddistrito(Integer.toString(integerprovincia));
          request.setAttribute("distritos", distritos);
          if(!("Seleccionar".equals(distrito))){
              if(distrito!=null){
          int numdist = Integer.valueOf(distrito).intValue();
          distrito = ddistrito.getStrDist(numdist);
          request.setAttribute("distrito", distrito);}}
          request.setAttribute("idabonado", idabonado);
          request.setAttribute("nombre", nombre);
          request.setAttribute("apellidop", apellidop);
          request.setAttribute("apellidom", apellidom);
          request.setAttribute("sexo", sexo);
          request.setAttribute("ecivil", ecivil);
          request.setAttribute("fechanac", fechanac);
          request.setAttribute("dir", dir);
          request.setAttribute("linea", linea);
          request.setAttribute("tipolinea", tipolinea);

          jspPage = "/modificar_abonado.jsp";

   }else if ("modabo".equals(action)) {

          DDepartamento ddepartamento = new DDepartamento();
          DProvincia dprovincia = new DProvincia();
          DDistrito ddistrito = new DDistrito();
          DDireccion ddireccion = new DDireccion();
          DTipoLinea dtipolinea = new DTipoLinea();
          DAbonado dabonado = new DAbonado();

          BDireccion bdireccion =new BDireccion();
          BDistrito bdistrito = new BDistrito();
          BAbonado babonado = null;
          /*obtengo los parametros*/
          String idabonado    = request.getParameter("idabonado");
          String nombre       = request.getParameter("nombre");
          String apellidop    = request.getParameter("apellidop");
          String apellidom    = request.getParameter("apellidom");
          String sexo         = request.getParameter("sexo");
          String ecivil       = request.getParameter("ecivil");
          String fechanac     = request.getParameter("fechanac");
          String dir          = request.getParameter("dir");
          String linea        = request.getParameter("linea");
          String tipolinea    = request.getParameter("tipolinea");
          String departamento = request.getParameter("departamento");
          String provincia    = request.getParameter("provincia");
          String distrito     = request.getParameter("distrito");

          BUpdateAbonado dupdabo = new BUpdateAbonado(idabonado,nombre,apellidop,apellidom,sexo,ecivil,
                                                      fechanac,departamento,provincia,distrito,dir,linea,tipolinea);

          int intiddist = Integer.valueOf(distrito).intValue();
          int intidabo = Integer.valueOf(idabonado).intValue();
          //dir
          int intiddir = 0;
          String strlive = null;
          strlive = dabonado.getLiveCondition(intidabo);
          int verificadireccion = ddireccion.verificaDireccion(dir);

          if(verificadireccion==0){ //se crea direccion en tabla tabla direccion y se actualiza dato iddireccion en tabla abonado

             ddireccion.crearDireccion(dir, intiddist);
             intiddir = ddireccion.getUltimoId();
             bdireccion.setIdDireccion(intiddir);
             babonado = new BAbonado(intidabo,nombre,apellidop,apellidom,sexo,ecivil,fechanac,bdireccion,strlive);
             dabonado.actualizarAbonado(babonado);}
          if(verificadireccion!=0){
             intiddir = ddireccion.getId(dir, intiddist);
             bdireccion.setIdDireccion(intiddir);
             babonado = new BAbonado(intidabo,nombre,apellidop,apellidom,sexo,ecivil,fechanac,bdireccion,strlive);
             dabonado.actualizarAbonado(babonado);
          }

          jspPage = "/modificar_abonado.jsp";
      }
   else if ("listaAbonados".equals(action)) {

            String[] ATRIBUTOS_JSON_EXCLUIDOS = new String[]{
            "~unique-id~", "class"
            };
            int start=Integer.valueOf(request.getParameter("start")).intValue();
            int limit=Integer.valueOf(request.getParameter("limit")).intValue();
            /*capturo los parametros para que los que fueron llenados se vuelvan a mostrar al refrescar la pagina*/
            String fltrlinea = request.getParameter("fltrlinea");
            String fltrtipolinea = request.getParameter("fltrtipolinea");
            if("1".equals(fltrtipolinea)){fltrtipolinea="fija";}
            if("2".equals(fltrtipolinea)){fltrtipolinea="movil";}
            String fltrnombre = request.getParameter("fltrnombre");
            String fltrapelpat = request.getParameter("fltrapelpat");
            String fltrapelmat = request.getParameter("fltrapelmat");
            String fltrdireccion = request.getParameter("fltrdireccion");
            String fltrcampana = request.getParameter("fltrcampana");


           // int valor = fltrcampana.length();
            /*a veces pueden tener valor null y el query botara error*/
            /*si son nulos, no se puso nada, entonces ese campo no limita, ergo puede tener valor % */

            if(fltrlinea == null || fltrlinea.contentEquals("")){fltrlinea="%";}
            if(fltrtipolinea == null || fltrtipolinea.contentEquals("")){fltrtipolinea="%";}
            if(fltrnombre == null || fltrnombre.contentEquals("")){fltrnombre="%";}
            if(fltrapelpat == null || fltrapelpat.contentEquals("")){fltrapelpat="%";}
            if(fltrapelmat == null || fltrapelmat.contentEquals("")){fltrapelmat="%";}
            if(fltrdireccion == null || fltrdireccion.contentEquals("")){fltrdireccion="%";}
            if(fltrcampana == null || fltrcampana.contentEquals("")){fltrcampana="%";}

            /*aplico el filtro o en su defecto incialmente, con todos los valores en null, mostrara todo la tabla*/
            DAbonado dabonado = new DAbonado();
            DProvincia dprovincia = new DProvincia();
            DDistrito ddistrito =  new DDistrito();
            List<BAbonadoXLinea> listabonados = new ArrayList<BAbonadoXLinea>();
            String argdepa="%";
            String argprovi="%";
            String argdistrito="%";

            listabonados = (List<BAbonadoXLinea>)dabonado.filtrarabonado(fltrlinea,fltrtipolinea,fltrnombre,fltrapelpat,fltrapelmat,argdepa,argprovi,argdistrito,fltrdireccion,fltrcampana);

            String listaJSON = null;
            if (listabonados == null) {
                listabonados = new ArrayList<BAbonadoXLinea>(0);
            }
            int end=start+limit;
            if (end>=listabonados.size()){
                end=listabonados.size();
            }
            if (start>=listabonados.size()){
                start=listabonados.size();
                end=start;
            }

            listaJSON = new String(new JsonSerializer().serialize(listabonados.subList(start,end), ATRIBUTOS_JSON_EXCLUIDOS).toString());
            request.setAttribute("listaJSON", listaJSON);
            request.setAttribute("totalCount", listabonados.size());
            jspPage = "/rptaJson.jsp";

      }
    else if ("eliminar_abonado".equals(action)) {

        /*RELLENA DEPARTAMENTO*/
        DDepartamento ddepartamento = new DDepartamento();
        List departamentos = new ArrayList();
        departamentos = ddepartamento.getmoddepartamento();
        request.setAttribute("departamentos", departamentos);

         /*Lleno combo tipo linea*/
        DTipoLinea dtipolinea = new DTipoLinea();
        List tipolineas = new ArrayList();
        tipolineas = dtipolinea.getmodtipolinea();
        request.setAttribute("fltrtipolineas", tipolineas);

        String idAbonado = request.getParameter("idabonado");
        DAbonado dabonado = new DAbonado();
        dabonado.borrarAbonado(Integer.valueOf(idAbonado).intValue());

        List listabonados = dabonado.filtrarabonado("%","%","%","%","%","%","%","%","%","%");
        request.setAttribute("listabonados", listabonados);

        jspPage = "/reporte_abonado.jsp";

    }

        dispatch(jspPage, request, response);
    }
    protected void dispatch(String jsp, HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        if (jsp != null) {
            RequestDispatcher rd = request.getRequestDispatcher(jsp);
            rd.forward(request, response);
        }
    }

    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
